﻿// 打开菜单权限树
function openAssignAuthTree() {
    // 发送 Ajax 请求查询 Auth 数据
    let ajaxReturn = $.ajax({
        "url":"assign/get/auth.json",
        "type":"post",
        "dataType":"json",
        "async":false
    })
    if(ajaxReturn.status != 200) {
        layer.msg(" 请 求 处 理 出 错 ！ 响 应 状 态 码 是 ： "+ajaxReturn.status+" 说 明 是 ："+ajaxReturn.statusText);
        return ;
    }
    // 从服务器端查询到的 list 不需要组装成树形结构， 这里我们交给 zTree 去组装
    let authList = ajaxReturn.responseJSON.data;
    // 准备对 zTree 进行设置的 JSON 对象
    let setting = {
        data: {
            simpleData: {
                enable: true,
                pIdKey: "categoryId"
            },
            key: {
                name: "title"
            }
        },
        check: {
            enable: true
        }
    }
    // 生成树形结构
    $.fn.zTree.init($("#authTreeDemo"), setting, authList);
}
// 回显复选框的选中情况
function presentCheckBox() {
    // 获取 zTreeObj 对象
    let zTreeObj = $.fn.zTree.getZTreeObj("authTreeDemo");
    // 调用 zTreeObj 对象的方法， 把节点展开
    zTreeObj.expandAll(true);
    // 查询已分配的 Auth 的 id 组成的数组
    let ajaxReturn = $.ajax({
        url: "assign/get/assigned.json",
        type: "post",
        data: {
            roleId: window.roleId
        },
        dataType: "json", "async": false
    })
    if (ajaxReturn.status != 200) {
        layer.msg(" 请 求 处 理 出 错 ！ 响 应 状 态 码 是 ： " + ajaxReturn.status + " 说 明 是 ：" + ajaxReturn.statusText);
        return;
    }
    // 从响应结果中获取 authIdArray
    let authIdArray = ajaxReturn.responseJSON.data;
    // 根据 authIdArray 把树形结构中对应的节点勾选上
    for (let i = 0; i < authIdArray.length; i++) {
        let authId = authIdArray[i];
        // 根据 id 查询树形结构中对应的节点
        let treeNode = zTreeObj.getNodeByParam("id", authId);
        // 将 treeNode 设置为被勾选
        let checked = true;
        // 设置不联动
        let checkTypeFlag = false;
        // 执行
        zTreeObj.checkNode(treeNode, checked, checkTypeFlag);
    }

}

// 确定分配按钮
function confirmAuthAssign() {
    // 声明一个专门的数组存放 id
    let authIdArray = [];
    // 获取 zTreeObj 对象
    let zTreeObj = $.fn.zTree.getZTreeObj("authTreeDemo");
    // 获取全部被勾选的节点
    let checkedNodes = zTreeObj.getCheckedNodes();
    // 遍历 checkedNodes
    for(let i = 0; i < checkedNodes.length; i++) {
        let checkedNode = checkedNodes[i];
        let authId = checkedNode.id;
        authIdArray.push(authId);
    }
    // 发送请求执行分配
    let requestBody = {
        authIdArray:authIdArray,
        roleId:[window.roleId]
    };
    requestBody = JSON.stringify(requestBody);
    $.ajax({
        url:"assign/do/auth.json",
        type:"post",
        data:requestBody,
        contentType:"application/json;charset=UTF-8",
        dataType:"json",
        success:function(response){
            let result = response.result;
            if(result == "SUCCESS") {
                layer.msg("操作成功！ ");
            }
            if (result == "FAILURE") {
                layer.msg("操作失败！ "+response.message);
            }
        },
        error:function(response) {
            layer.msg(response.status+" "+response.statusText);
        }
    })
}